package com.itheima.leetcode;

import com.itheima.queue.ArrayQueue3;

/**
 * 单队列模拟栈
 * 调用push、pop等方法的次数最多100
 * 每次调用pop和top都能保证栈不为空
 *
 * @FileName E05LeetCode225
 * @Description
 * @Author Sword
 * @date 2025-05-09
 **/
public class E05LeetCode225 {

    /*
        队列头     队列尾
                    a  b
        栈顶           栈底

        queue.offer(a)
        queue.offer(b)
        queue.offer(c)

        push 添加
            - 将新加入元素，前面的所有元素从队列头移动到队列尾
        pop 移除
            - 直接移除队列头元素
     */

    private int size = 0;

    ArrayQueue3<Integer> queue = new ArrayQueue3<>(100);

    public void push(int x) {
        queue.offer(x);

        for (int i = 0; i < size; i++) {
            queue.offer(queue.poll());
        }
        size++;

    }

    public int pop() {
        size--;

        return queue.poll();
    }

    public int top() {
        return queue.peek();
    }

    public boolean empty() {
        return queue.isEmpty();
    }
}
